package com.odontosis.view.decorator;

import java.util.Calendar;
import java.util.Date;

import org.displaytag.decorator.TableDecorator;

import com.odontosis.entidade.Mes;
import com.odontosis.entidade.Pagamento;
import com.odontosis.entidade.Recibo;
import com.odontosis.util.StringUtilsOdontosis;

public class PagamentoDecorator extends TableDecorator {

	public String getId() {
		Pagamento pagamento = (Pagamento) getCurrentRowObject();
		return pagamento.getId().toString();
	}
	
	public String getJustificativa(){
		Pagamento pagamento = (Pagamento) getCurrentRowObject();
//		String id = pagamento.getId().toString();
//		StringBuffer texto = new StringBuffer();
//		texto.append("<span id=\"toedit"+id+"\">0");
//		texto.append(!StringUtilsOdontosis.isVazia(pagamento.getJustificativa())?pagamento.getJustificativa():"-");
//		texto.append("</span>");
//		texto.append("<ajax:editor"); 
//		texto.append("target=\"toedit"+ id+"\""); 
//		texto.append("styleId=\"editor"+ id+" \"");
//		texto.append("baseUrl=\"${contextPath}/callout.view\"");
//		texto.append("postFunction=\"onSuccess\"/>");
		
		String justificativa = !StringUtilsOdontosis.isVazia(pagamento.getJustificativa())?pagamento.getJustificativa():"-";
		if(isVencido()) {
			return "<span class='vencido'>" + justificativa+ "</span>";
		}
		return justificativa;
	}
	
	public String getDescricaoServico(){
		Pagamento pagamento = (Pagamento) getCurrentRowObject();
		return pagamento.getServico().getDescricao();
	}
	
	public String getValor(){
		Pagamento pagamento = (Pagamento) getCurrentRowObject();
		String valor = StringUtilsOdontosis.formatarDouble(pagamento.getValor().doubleValue());
		if(isVencido()) {
			return "<span class='vencido'>" + valor + "</span>";
		}
		return valor;
	}
	
	public String getValorTotal(){
		Pagamento pagamento = (Pagamento) getCurrentRowObject();
		Double total = pagamento.getValor().doubleValue();
		for(Recibo recibo: pagamento.getListaRecibos()){
			if(recibo.isAtivo()){
				total += recibo.getValor().doubleValue();
			}
		}
		if(isVencido()) {
			return "<span class='vencido'>" + StringUtilsOdontosis.formatarDouble(total) + "</span>";
		}
		return StringUtilsOdontosis.formatarDouble(total);
	}
	
	public String getAnoVencimento(){
		Pagamento pagamento = (Pagamento) getCurrentRowObject();
		return pagamento.getAnoVencimento().toString();
	}
	
	public String getMesVencimento(){
		Pagamento pagamento = (Pagamento) getCurrentRowObject();
		return Mes.recuperarPorId(pagamento.getMesVencimento()).getDescricao();
	}
	
	public String getTipoServico(){
		Pagamento pagamento = (Pagamento) getCurrentRowObject();
		if(isVencido()){
			return "<span class='vencido'>" + pagamento.getServico().getTipoServico().getDescricao() + "</span>";
		}
		return pagamento.getServico().getTipoServico().getDescricao();
	}
	
	public String getDataVencimento(){
		Pagamento pagamento = (Pagamento) getCurrentRowObject();
		String dataVencimento = Mes.recuperarPorId(pagamento.getMesVencimento()).getDescricao() + "/" + pagamento.getAnoVencimento();
		if(isVencido()){
			return "<span class='vencido'>" + dataVencimento + "</span>";
		}
		return dataVencimento;
	}

	public String getFuncoes() {
		StringBuffer lEditar = new StringBuffer();

		lEditar.append("<a  href=\"/odontosis/recibo.do?pagamentoId="
				+ getId() + " \" class=\"edit\" title=\"Informar Pagamento\">");

		lEditar.append("<a  href=\"javascript:isentar("
				+ getId() + ")\" id=\"action2\" class=\"del\" title=\"Isentar\">");
		
		lEditar.append("<a  href=\"javascript:justificar("
				+ getId() + ") \" class=\"view\" title=\"Inserir Justificativa\">");


		return lEditar.toString();
	}
	
	public boolean isVencido(){
		Pagamento pagamento = (Pagamento) getCurrentRowObject();
		Calendar calendar = Calendar.getInstance();
		int mesCorrente = calendar.get(Calendar.MONTH) + 1;
		int anoCorrente = calendar.get(Calendar.YEAR);
		if((mesCorrente > pagamento.getMesVencimento()) && anoCorrente >= pagamento.getAnoVencimento()){
			return true;
		}
		if(anoCorrente > pagamento.getAnoVencimento()) {
			return true;
		}
		return false;
	}

}
